#ifndef STANDARD_NETWORK_MODULE_H
#define STANDARD_NETWORK_MODULE_H

#include <singleton.h>
#include <pipe_module.h>
#include <gate_module.h>

class CNetworkModule : public CSingleton<CNetworkModule>
{
    friend class CSingleton<CNetworkModule>;
public:
    // default constructor
    CNetworkModule(void);
    // default destructor
    ~CNetworkModule(void);
    // initialize
    bool Init();
    // Run
    bool Run();
protected:
    bool _LoadConfig(const char * szFileName);
protected:
    utility::network::net_module * m_pNetModule;
    utility::network::pipe_module * m_pPipeModule;
    utility::network::gate_module * m_pGateModule;
    utility::network::gate_listener * m_pListener;
    std::string m_strPort;
    std::string m_strIP;
    std::string m_strRecvBufSize;
};

#endif  // endif of STANDARD_NETWORK_MODULE_H

